//导入express包
const express = require('express');
//导入events集合对象
const EventModel = require('../../models/EventModel')
//获取date-fns包的format方法
const { format } = require('date-fns')
//导入CheckToken中间件
const CheckToken = require('../../midleware/CheckToken')

//创建路由对象
const router = express.Router();

//响应首页
router.get('/', CheckToken, (req, res) => {
    //读取events集合下的全部文档
    EventModel.find((err, data) => {
        if (err) {
            res.json({
                code: '1001',
                msg: '获取全部文档失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '获取全部文档成功...',
            data: data
        })
    })
})

//处理用户添加事项
router.post('/add', CheckToken, (req, res) => {
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //将用户填写的内容保存到数据库中
    EventModel.create({
        title: title,
        detail: detail,
        time: time
    }, (err, data) => {
        if (err) {
            res.json({
                code: '1002',
                msg: '保存数据至数据库失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '保存至数据库成功...',
            data: data
        })
    })
})

//根据_id来删除指定的文档
router.get('/delete/:_id', CheckToken, (req, res) => {
    //获取_id
    const _id = req.params._id
    //根据_id来删除指定的文档
    EventModel.deleteOne({ _id: _id }, (err, data) => {
        if (err) {
            res.json({
                code: '1003',
                msg: '删除指定文档失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '删除指定文档成功...',
            data: {}
        })
    })
})

//响应编辑事项页面
router.get('/change/:_id', CheckToken, (req, res) => {
    //获取_id
    const _id = req.params._id
    //根据_id读取指定文档
    EventModel.findOne({ _id: _id }, (err, data) => {
        if (err) {
            res.json({
                code: '1004',
                msg: '读取指定文档失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '读取指定文档成功...',
            data: data
        })
    })
})

//处理用户保存修改事项
router.post('/change/:_id', CheckToken, (req, res) => {
    //获取_id
    const _id = req.params._id
    //获取用户填写的内容
    const { title, detail } = req.body
    //获取用户当前计算机的时间
    const time = format(new Date(), 'yyyy-MM-dd HH:mm:ss')
    //修改文档中的内容
    EventModel.updateOne({ _id: _id }, {
        title: title,
        detail: detail,
        time: time
    }, (err, data) => {
        if (err) {
            res.json({
                code: '1005',
                msg: '更新指定文档失败...',
                data: null
            })
            return
        }
        res.json({
            code: '0000',
            msg: '更新指定文档成功...',
            data: data
        })
    })
})

//数据暴露
module.exports = router;
